const fs = require('fs')
const path = require('path')
const multiparty = require('multiparty')
const xlsx = require('node-xlsx')
const { RESOURCE_URL } = require('../config/database')
const { addValue } = require('../service/index')

const uploadFile = (req, res) => {
    /* 生成multiparty对象，并配置上传目标路径 */
    let form = new multiparty.Form();
    /* 设置编辑 */
    form.encoding = 'utf-8';
    //设置文件存储路劲
    form.uploadDir = `${RESOURCE_URL}/image`;
    //设置文件大小限制
    form.maxFilesSize = 2 * 1024 * 1024;
    // form.maxFields = 1000;   //设置所有文件的大小总和//上传后处理
    form.parse(req, function (err, fields, files) {
        if (err) {
            console.log('parse error:' + err);
            res.send({
                status: 500,
                message: '上传失败'
            })
            return;
        }
        const inputFile = files.file[0];
        const uploadedPath = inputFile.path;
        const dstPath = `${form.uploadDir}/` + inputFile.originalFilename;
        // 重命名为真实文件名
        fs.rename(uploadedPath, dstPath, function (err) {
            if (err) {
                console.log('rename error:' + err);
            }
        });
        res.send({
            status: 200,
            message: '上传成功',
            data: {
                url: inputFile.originalFilename
            }
        })
    });
}
const batchUploadFile = async (req, res) => {
    //给文件添加后缀名
    const suffixName = path.extname(req.file.originalname)
    fs.renameSync(req.file.path, req.file.path + suffixName, (err) => { })
    // 第一个文件sheet1
    const { data } = xlsx.parse(req.file.path + suffixName)[0]
    //  切掉第一排表头
    data.splice(0, 1)
    const list = []
    //定义一个空列表，并且循环列表
    data.forEach(item => {
        //把数据取出并添加到list列表中,使他形成一个[{},{}]数组包多个对象的形式，数据名必须跟集合里的字段一样
        list.push({
            name: item[0],
            phoneNumber: `${item[1]}`,
            sex: item[2],
            password: '123456',
            role: ''
        })
    })
    //把数据插入到表中
    req.url = '/addValue/T_USER'
    req.body = list;
    addValue(req, res)
}
module.exports = {
    uploadFile,
    batchUploadFile
}